package br.com.gerenteweb.beans;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.sun.istack.internal.NotNull;

/**
 * Classe Unidade De Medida Responsavel por representar as unidades de medida de
 * cada produto
 * 
 * @author Felipe-
 *
 */
@Entity
@Table(name = "Unidades_De_Medidas")
@Embeddable
public class UnidadeDeMedida implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ID_MEDIDA")
	private int id; // codigo da unidade de medida

	@NotNull
	@Column(name = "NOME", unique = true)
	private String nome; // nome da unidade de medida, ex:par,metro,litro, kilos

	@NotNull
	@Column(name = "SIGLA", length = 4, unique = true)
	private String sigla; // sigla da unidade de medida, ex.: par,MT,LT,KG

	/**
	 * Construtor da classe Unidade de medida
	 * 
	 * @param codigo
	 *            codigo do objeto da clase
	 * @param nome
	 *            nome da unidade, ex.: MT,PAR,LT
	 */
	public UnidadeDeMedida(int codigo, String nome, String sigla) {
		this.id = codigo;
		this.nome = nome;
		this.sigla = sigla;
	}

	/**
	 * Construtor Default da classe UnidadeDeMedida
	 */
	public UnidadeDeMedida() {

	}

	/**
	 * obtem o nome da unidade
	 * 
	 * @return char[] nome da unidade
	 */
	public String getNome() {
		String nome = this.nome;
		return nome;
	}

	/**
	 * modifica o nome da unidade de medida
	 * 
	 * @param nome
	 *            nome a ser inserido
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getId() {
		int id = this.id;
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getSigla() {
		String sigla = this.sigla;
		return sigla;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result + ((sigla == null) ? 0 : sigla.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		UnidadeDeMedida other = (UnidadeDeMedida) obj;
		if (this.getId() == other.getId()) {
			return true;
		}
		return false;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public String toString() {
		return "UnidadeDeMedida [id=" + id + ", nome=" + nome + ", sigla="
				+ sigla + "]";
	}
}
